package com.global.college.ui.activity;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.net.Uri;
import android.os.Build;
import android.os.Environment;
import android.provider.MediaStore;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.Toast;

import com.bumptech.glide.Glide;
import com.global.college.R;
import com.global.college.views.ImageCycleView;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;

public class BigImageActivity extends Activity {

    private ImageCycleView mAdView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //无title
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        //全屏
        getWindow().setFlags(WindowManager.LayoutParams. FLAG_FULLSCREEN ,
                WindowManager.LayoutParams. FLAG_FULLSCREEN);
        setContentView(R.layout.activity_big_image);
        initDatas();
    }

    private void initDatas() {
        String[] images=getIntent().getStringArrayExtra("images");
        int page = getIntent().getIntExtra("page", 0);
        mAdView = (ImageCycleView) this.findViewById(R.id.ad_view);
        mAdView.setImageResources(images, page, mAdCycleViewListener);

    }


    private ImageCycleView.ImageCycleViewListener mAdCycleViewListener = new ImageCycleView.ImageCycleViewListener() {
        @Override
        public void onImageClick(int position, View imageView) {
            finish();
        }

        @Override
        public void onImageLongClick(int position, View imageView) {
            String[] PERMISSIONS = {
                    "android.permission.READ_EXTERNAL_STORAGE",
                    "android.permission.WRITE_EXTERNAL_STORAGE" };
            //检测是否有写的权限
            int permission = ContextCompat.checkSelfPermission(BigImageActivity.this,
                    "android.permission.WRITE_EXTERNAL_STORAGE");
            if (permission != PackageManager.PERMISSION_GRANTED) {
                // 没有写的权限，去申请写的权限，会弹出对话框
                ActivityCompat.requestPermissions(BigImageActivity.this, PERMISSIONS,1);
            }
            try {

                //创建savephoto类保存图片
                SavePhoto savePhoto = new SavePhoto(BigImageActivity.this);
                savePhoto.SaveBitmapFromView(imageView);


            } catch (ParseException e) {
                e.printStackTrace();
            }

        }

        @Override
        public void displayImage(String imageURL, ImageView imageView) {
            Glide.with(BigImageActivity.this).load(imageURL.replaceAll("\\\\", "/")).into(imageView);
        }
    };

    public class SavePhoto{
        //存调用该类的活动
        Context context;

        public SavePhoto(Context context) {
            this.context = context;
        }

        //保存文件的方法：
        public void SaveBitmapFromView(View view) throws ParseException {
            int w = view.getWidth();
            int h = view.getHeight();
            Bitmap bmp = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
            Canvas c = new Canvas(bmp);
            view.layout(0, 0, w, h);
            view.draw(c);
            // 缩小图片
            Matrix matrix = new Matrix();
            matrix.postScale(0.5f,0.5f); //长和宽放大缩小的比例
            bmp = Bitmap.createBitmap(bmp,0,0,bmp.getWidth(),bmp.getHeight(),matrix,true);
            DateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
            saveBitmap(bmp,bmp.toString() + ".JPEG");
            //Toast.makeText(BigImageActivity.this, "height:"+mAdView.mImageView.getHeight()+"width:"+mAdView.mImageView.getWidth(), Toast.LENGTH_SHORT).show();
        }

        /*
         * 保存文件，文件名为当前日期
         */
        public void saveBitmap(Bitmap bitmap, String bitName){
            String fileName ;
            File file ;
            if(Build.BRAND .equals("Xiaomi") ){ // 小米手机
                fileName = Environment.getExternalStorageDirectory().getPath()+"/DCIM/Camera/"+bitName ;
            }else{  // Meizu 、Oppo
                Log.v("qwe","002");
                fileName = Environment.getExternalStorageDirectory().getPath()+"/DCIM/"+bitName ;
            }
            file = new File(fileName);

            if(file.exists()){
                file.delete();
            }
            FileOutputStream out;
            try{
                out = new FileOutputStream(file);
                // 格式为 JPEG，照相机拍出的图片为JPEG格式的，PNG格式的不能显示在相册中
                if(bitmap.compress(Bitmap.CompressFormat.JPEG, 90, out))
                {
                    out.flush();
                    out.close();
                    // 插入图库
                    MediaStore.Images.Media.insertImage(context.getContentResolver(), file.getAbsolutePath(), bitName, null);

                }
            }
            catch (FileNotFoundException e)
            {
                e.printStackTrace();
            }
            catch (IOException e)
            {
                e.printStackTrace();

            }
            // 发送广播，通知刷新图库的显示
            context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + fileName)));
            Toast.makeText(context,R.string.picture_had_alredy_sava,Toast.LENGTH_SHORT).show();

        }
    }




}
